home *** CD-ROM | disk | FTP | other *** search
- #include "solid.h"
-
- /* global variables */
- struct obj_defn *defn_ptr[MAX_TYPES] = {NULL, NULL,
- NULL, NULL}; /* pointers to object definitions */
- struct solid_obj *obj_first = (struct solid_obj *)NULL;
- /* pointer to first object in scene */
- int sweeps = 20; /* number of sweeps to construct
- sphere; must be even */
- int facets = 36; /* number of facets per sweep */
- float proj_z = 100.0; /* distance between viewer and
- model */
- float proj_d = 10.0; /* distance between viewer and
- picture plane */
- BOOL init_screen = FALSE; /* indicates whether screen
- is initialized */
- int maxx, maxy; /* maximum x and y screen coords */
- float border = 0.05; /* fraction of graphics screen to
- use as a border when maximizing image size */
- float screen_x_min, screen_x_max, screen_y_min,
- screen_y_max; /* minimum and maximum coordinates
- used to maximize image size */
- int color_bkgd = BLUE, color_visible = RED,
- color_hidden = WHITE; /* color selections for
- background, visible lines, hidden lines */
- enum LINESTYLE disp_hidden = LINE_NOSHOW; /* how to
- display hidden lines: don't display, broken line,
- solid line */
- float light_x, light_y, light_z; /* light source
- coordinates */
- int render_opt = TRUE; /* rendering option */
- void main(void)
- {
- struct solid_obj *obj_ptr;
- int gdriver = DETECT, gmode;
- if (registerbgidriver(EGAVGA_driver) < 0)
- quit(ERR_DRIVER, __FILE__, __LINE__);
- initgraph(&gdriver, &gmode, "");
- setbkcolor(color_bkgd);
- setcolor(color_visible);
- maxx = getmaxx();
- maxy = getmaxy();
- outtext("Copyright (c) 1991 by Saul Mooallem");
- light_x = 300.0;
- light_y = 300.0;
- light_z = 300.0;
- obj_ptr = make_object(CUBE_OBJ); /* construct
- instance */
- obj_ptr->color = YELLOW;
- obj_ptr->scale = 7.0; /* scaling factor */
- obj_ptr->xlate[0] = 20.0; /* translation */
- obj_ptr->xlate[1] = -20.0;
- obj_ptr->xlate[2] = 15.0;
- obj_ptr->YAW = PI / 8.0; /* rotation */
- obj_ptr->ROLL = PI / 16.0;
- obj_ptr->PITCH = 3.0 * PI / 16.0;
- obj_ptr = make_object(SPHERE_OBJ);
- obj_ptr->color = RED;
- obj_ptr->scale = 30.0;
- obj_ptr->YAW = PI / 4.0;
- obj_ptr->ROLL = 3 * PI / 4.0;
- obj_ptr->PITCH = 3.0 * PI / 8.0;
- obj_ptr->xlate[1] = -12.0;
- obj_ptr = make_object(CYLIND_OBJ);
- obj_ptr->color = YELLOW;
- obj_ptr->scale = 6.0;
- obj_ptr->YAW = PI / 4.0;
- obj_ptr->ROLL = PI / 4.0;
- obj_ptr->PITCH = PI / 4.0;
- obj_ptr->xlate[0] = -8.0;
- obj_ptr->xlate[1] = 8.0;
- obj_ptr->xlate[2] = 25.0;
- obj_ptr = make_object(CONE_OBJ);
- obj_ptr->color = RED;
- obj_ptr->scale = 12.0;
- obj_ptr->YAW = 3 * PI / 4.0;
- obj_ptr->ROLL = 7 * PI / 4.0;
- obj_ptr->PITCH = PI / 4.0;
- obj_ptr->xlate[0] = 15.0;
- obj_ptr->xlate[1] = 8.0;
- show_scene();
- getch();
- closegraph();
- }
-